<?php

namespace App\Http\model;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Log;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
class Curdpost extends Model
{

	/**
	 * @Author   张吉星
	 * @DateTime 2018-05-24
	 * @version  0.8
	 */

	public function url($table){  //接受变量应该为两个参数 第一个为表名称 $table,第二个为数据 $array
		$array = [
			//驾驶员基本信息
			'driver'=>[
				'CompanyId'=>"test",  // 公司标识 (暂时没有)
				'Source'=>0,  // 消息来源标识(部级平台分配,统一为0)
				'url'=>"http://travel.shidaichuxing.com/company/company/code1",  // url
				'IPCType'=>'baseInfoDriver',  //业务接口代码 ,结构体名称
			],
			// 车辆基本信息
			'car_car'=>[
				'CompanyId'=>"test",  // 公司标识 (暂时没有)
				'Source'=>0,  // 消息来源标识(部级平台分配,暂时统一为0)
				'url'=>"http://XXXXXXX/baseinfo/vehicle",  // url
				'IPCType'=>'baseInfoVehicle',  //业务接口代码 ,结构体名称
			],
			// 车辆保险信息
			'car_insurance'=>[
				'CompanyId'=>"test",  // 公司标识 (暂时没有)
				'Source'=>0,  // 消息来源标识(部级平台分配,暂时统一为0)
				'url'=>"http://XXXXXXX/baseinfo/vehicleinsurance",  // url
				'IPCType'=>'baseInfoVehicleInsurance',  //业务接口代码 ,结构体名称
			],
			// 车辆里程信息
			'vehicletotalmile'=>[
				'CompanyId'=>"test",  // 公司标识 (暂时没有)
				'Source'=>0,  // 消息来源标识(部级平台分配,暂时统一为0)
				'url'=>"http://XXXXXXX/baseinfo/vehicletotalmile",  // url
				'IPCType'=>'baseInfoVehicleInsurance',  //业务接口代码 ,结构体名称
			],

			// 驾驶员培训信息
			'train'=>[
				'CompanyId'=>"test",  // 公司标识 (暂时没有)
				'Source'=>0,  // 消息来源标识(部级平台分配,暂时统一为0)
				'url'=>"http://XXXXXXX/baseinfo/drivereducate",  // url
				'IPCType'=>'baseInfoDriverEducate',  //业务接口代码 ,结构体名称
			],
			// 驾驶员移动终端信息
			'driverapp'=>[
				'CompanyId'=>"test",  // 公司标识 (暂时没有)
				'Source'=>0,  // 消息来源标识(部级平台分配,暂时统一为0)
				'url'=>"http://XXXXXXX/baseinfo/driverapp",  // url
				'IPCType'=>'baseInfoDriverApp',  //业务接口代码 ,结构体名称
			],
			// 网约车驾驶员统计信息
			'driverstat'=>[
				'CompanyId'=>"test",  // 公司标识 (暂时没有)
				'Source'=>0,  // 消息来源标识(部级平台分配,暂时统一为0)
				'url'=>"http://XXXXXXX/baseinfo/driverstat",  // url
				'IPCType'=>'baseInfoDriverStat',  //业务接口代码 ,结构体名称
			],
			// passenger
			'social_user'=>[
				'CompanyId'=>"test",  // 公司标识 (暂时没有)
				'Source'=>0,  // 消息来源标识(部级平台分配,暂时统一为0)
				'url'=>"http://XXXXXXX/baseinfo/passenger",  // url
				'IPCType'=>'baseInfoPassenger',  //业务接口代码 ,结构体名称
			],
			// 网约车平台基本信息
			'social_company'=>[
				'CompanyId'=>"test",  // 公司标识 (暂时没有)
				'Source'=>0,  // 消息来源标识(部级平台分配,暂时统一为0)
				'url'=>"http://XXXXXXX/baseinfo/company",  // url
				'IPCType'=>'baseInfoCompany',  //业务接口代码 ,结构体名称
			],
		];
		if(in_array($table,array_keys($array))){
			$url = $array[$table]['url'].'?phone=13241000505';
			$data = [];
			// 'data'=> json_encode(['CompanyId'=>'test','Source'=>0,'IPCType'=>'ratedPassenger','ratedPassenger'=>$array]);
			$ch = curl_init();
			// $header[]='Content-Type: application/json; charset=utf-8';
		    curl_setopt($ch, CURLOPT_URL, $url);
		    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		    curl_setopt($ch, CURLOPT_POST, 1);
		    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
		    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
			    // 'Content-Type'=>'application/json',
			    // 'Connection'=>'keep-alive'
			));
		    $output = curl_exec($ch);
		    curl_close($ch);
		    return $output;
			
		}else{
			// $arr = [];
		}
		// return $arr;
	}
	// 司机库根据表名获取数据表字段
	public function table($table){
		// $table 数据表名称  select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name'
        $columns = Schema::getColumnListing($table);
        $columns = array_splice($columns,1);
        $str = implode(',',$columns);
        return $columns;
	}

	// 网约车库根据表名获取数据表字段 数组格式
	public function selectFieldArr($table){
		$data = Db::connection('mysql1')->select("SHOW COLUMNS FROM travel_w_".$table."");
		$data = json_decode(json_encode($data),true);
		$rt = array();
		for ($i=0; $i < count($data); $i++) {
			$rt[$i] = $data[$i]['Field'];
		}
		$res = array_splice($rt,1);
		return $res;
	}

	// 网约车库根据表名获取数据表字段 字符串格式
	public function SelectFieldStr($table){
		$data = Db::connection('mysql1')->select("SHOW COLUMNS FROM travel_w_".$table."");
		$data = json_decode(json_encode($data),true);
		$rt = array();
		for ($i=0; $i < count($data); $i++) {
			$rt[$i] = $data[$i]['Field'];
		}
		$res = implode(',',array_splice($rt,1));
		return $res;
	}
	// 查询数据
	public function selectArr($table,$where){
		if($table && $where){
			$data = Db::connection('mysql1')->select("select * from travel_w_".$table." where ".$where);
			$data = json_decode(json_encode($data),true);
			if($data){
				return ['code'=>1000,'msg'=>"数据获取成功",'data'=>$data];
			}else{
				return ['code'=>1001,'msg'=>"数据获取失败,没有查询到数据"];
			}
		}else{
			return ['code'=>1002,'msg'=>"参数错误"];
		}
		
	}
	// 新增
	public function NewInsert($table,$value){
		$key = array_keys($value);
		$values = array_values($value);
		$newkey = implode(',', $key);
		$newvalues = implode(',', $values);
		$field = $this->selectFieldStr($table);
		$str = "'";
		$newvalues = $str.implode($str.",".$str, $values).$str;
		$data = Db::connection('mysql1')->select("insert into travel_w_".$table." (".$newkey.") values (".$newvalues.")");
		return ['code'=>1000,'mes'=>"成功"];
	}
	// 修改
	public function NewUpdate($table,$value,$where){
		$str = "'";
		// $strs = $str.implode($str.",".$str, $value).$str;
		$field = $this->selectFieldArr($table);
		$key = array_keys($value);
		$values = array_values($value);
		foreach ($key as $k => $v) {
			if(in_array($key[$k], $field)){
				$newarr[$k] = $key[$k].' = '."'".$values[$k]."'";
			}
		}
		// $time = "UpdateTime = ".date("YmdHis",time());
		// $Flag = "Flag = 2";
		// array_push($newarr, $time,$Flag);
		$newstr = implode(',', $newarr);
		// dd($newstr);
		$data = Db::connection('mysql1')->select("update travel_w_".$table." set ".$newstr." where ".$where);
		$res = $this->url($table);
		// dd($res);
		// exit;
		return ['code'=>1000,'mes'=>"成功"];
	}
	// 删除
	public function NewDel($table,$where){
		// $this->log($table,"软删除");
		
		$data = Db::connection('mysql1')->select("select * from travel_w_".$table." where ".$where);
		$data = json_decode(json_encode($data),true);
		$data = array_splice($data[0],1);
		$field = $this->selectFieldArr($table);
		$newarr = $data;
		// $newarr['Flag'] = 3;
		$key = array_keys($newarr);
		$values = array_values($newarr);
		foreach ($key as $k => $v) {
			if(in_array($key[$k], $field)){
				$newarrs[$k] = $key[$k].' = '."'".$values[$k]."'";
			}
		}
		$newstr = implode(',', $newarrs);
		$res = Db::connection('mysql1')->select("update travel_w_".$table." set ".$newstr." where ".$where);
		return ['code'=>1000,'mes'=>"成功"];
	}
	public function logs($table,$curd){
		$time = date("Y-m-d H:i:s",time());
		// $log = new Logger('register');
		// $log->pushHandler(new StreamHandler(storage_path('logs/reg.log'),Logger::INFO) );
		// $log->addInfo('操作历史:'.$time." 进行操作 : ".$curd.",修改了表 : ".$table);
		// Log::useFiles(storage_path().'/logs/crud.log')->info('操作历史:',$time." 进行操作 : ".$curd.",修改了表 : ".$table);
		// Log::info($time." 进行操作 : ".$curd.",修改了表 : ".$table);
		// $log = new Logger('curd');
		// $logDir = storage_path('logs/curd');
		// if (!is_dir($logDir)) {
		// 	mkdir($logDir, 0777, true);
		// }
		// $log->pushHandler(new StreamHandler($logDir . '/' . date('Y-m-d') . '.log', Logger::DEBUG));
		Log::info("进行了".$curd."操作");
	}
}
